#ifndef DSPSIMULATOR_INSTRUCTION_AND_H
#define DSPSIMULATOR_INSTRUCTION_AND_H

#include "dspSimulator/targetMachine/dspInstruction.h"

namespace dspsimulator {
    class AND : public DspInstruction {
    public:
        explicit AND(u64 address = 0, u64 size = 4) :
                DspInstruction("AND", address, size, 0) {};

        AND(const AND &) = default;

        AND(AND &&) = default;

        AND &operator=(const AND &) = default;

        AND &operator=(AND &&) = default;

        ~AND() override = default;

        void generate_ir(const std::shared_ptr<simulator::IRGenElement> &ir_gen_element) override;

        std::string to_string() const override;

        std::shared_ptr<Instruction> clone() const override;

    protected:
        std::shared_ptr<DspInstruction> decode_standard_instruction(const std::shared_ptr<DspInstructionInfo> &dsp_instruction_info) override;
    };
}

#endif //DSPSIMULATOR_INSTRUCTION_AND_H